<template>
  <div>
      <el-row>
          <el-col :span="8">
                <el-input placeholder="请输入内容" clearable v-model="queryInfo.queryString" class="input-with-select" @clear="findPage">
                    <el-button slot="append" icon="el-icon-search" @click="findPage"/>
                </el-input>
          </el-col>
          <el-col :span="2">
                <el-button style="margin-left: 10px" @click="insert" type="primary">添加信息</el-button>
          </el-col>
      </el-row>

      <el-table :data="tableList" stripe >
              <el-table-column prop="id" label="主键" width="180"/>
              <el-table-column prop="label" label="权限标签" width="180"/>
              <el-table-column prop="code" label="权限标签值"/>
                <el-table-column label="是否启用" v-hasPermi="['PRE_UPDATE']">
                    <template slot-scope="scope">
                        <el-switch @change="updateStatus(scope.row)" v-model="scope.row.status" />
                    </template>
                </el-table-column>
              <el-table-column fixed="right" label="操作" width="180">
                <template slot-scope="scope">
                  <el-button type="primary" @click="update(scope.row) " size="small" icon="el-icon-edit" circle/>
                  <el-button type="danger" @click="deleteById(scope.row.id)" size="small"   icon="el-icon-delete" circle/>
                </template>
              </el-table-column>
      </el-table>

        <el-pagination
              @size-change="handlePageSize"
              @current-change="handlePageNumber"
              :current-page="currentPage4"
              :page-sizes="[7, 25, 50, 100]"
              :page-size="queryInfo.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="total"/>

<!--    添加和修改弹框-->
        <el-dialog :title="title" :visible.sync="open1" width="30%" @close="clickCancel">
              <el-form :model="form" ref="form" :rules="rules">
                <el-form-item label="权限标签" prop="label">
                  <el-input v-model="form.label" />
                </el-form-item>
                <el-form-item label="权限标签值" prop="code">
                  <el-input v-model="form.code"  />
                </el-form-item>
                <el-form-item label="是否启用" prop="status">
                      <el-radio-group v-model="form.status">
                        <el-radio :label="true">是</el-radio>
                        <el-radio :label="false">否</el-radio>
                      </el-radio-group>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="clickCancel">取 消</el-button>
                <el-button type="primary" @click="clickOk">确 定</el-button>
              </div>
        </el-dialog>
    </div>
</template>

<script>
export default {
      data() {
        return {
          //分页查询条件
          queryInfo: {
            //页码
            pageNumber: 1,
            //页数
            pageSize: 7,
            //关键字
            queryString: ""
          },
          //表格数据
          tableList:[],
          //总记录数
          total: 0,
          currentPage4: 1,
          //弹窗标题
          title: null,
          //是否打开会话框
          open1: false,
          //表单数据
          form: {},
          //表单校验
          rules:{
            label:[
              { required: true, message: '请输入权限标签', trigger: 'blur' },
              {min:1 , max: 50, message: "权限标签的长度为1~50",trigger: 'blur'}
            ],
            code:[
              { required: true, message: '请输入权限标签值', trigger: 'blur' },
              {min:1 , max: 20, message: "权限标签值的长度为1~20",trigger: 'blur'}
            ],
            status:[
              { required: true, message: '请选择状态', trigger: 'blur' },
            ],
          }
        }
      },
  /**
   * 页面初始化调用方法
   */
    created(){
      this.findPage();
    },
    methods:{
        insert(){
          this.title = "添加权限";
          this.open1 = true;
        },

        update(row){
          this.form = row;
          this.title = "修改权限";
          this.open1 = true;
        },

        findPage(){
          this.$ajax.post("/permission/findPage", this.queryInfo).then((res)=>{
            this.tableList = res.data.rows;
            this.total = res.data.total;
          });
        },

        //页面改变事件
        handlePageNumber(newPageNumber){
            //将分页的新数据的参数传递给后端查询
            this.queryInfo.pageNumber = newPageNumber;
            //调分页方法
            this.findPage();
        },

        handlePageSize(newPageSize){
            this.queryInfo.pageSize = newPageSize;
            this.findPage();
        },

      //删除权限信息
      deleteById(id){
        this.$confirm('您将永久删除id是{' + id +' }的权限, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          //调用后端删除权限接口
          this.$ajax.delete(`/permission/delete/${id}`).then(res => {
            this.$message.success(res.data.message);
            this.queryInfo.pageNumber = 1;
            this.findPage();
          })
        }).catch(() => {
          this.$message({
            type: 'info',
            message: '已取消删除'
          });
        });
      },

      //关闭弹窗表单时刷新表单数据
      clickCancel(){
        this.form = {};
        this.open1 = false;
      },

      //提交表单要添加的权限数据给后端
      clickOk(){
          //进行表单校验
        this.$refs.form.validate((valid) =>{
          //校验不通过
          if(!valid) return this.$message.error('表单校验不通过，请检查后提交！')

          //校验通过 判断是否是新增
          if(this.form.id === undefined || this.form.id ===null){
            this.$ajax.post("/permission/insert",this.form).then((res)=>{
              this.$message.success(res.data.message)
              this.open1 = false;
              this.findPage();
            })
          }else {
            this.$ajax.put('/permission/update',this.form).then((res)=>{
              this.$message.success(res.data.message)
              this.open1 = false;
              this.findPage();
            })
          }
        })
      },

      /* 改变权限数据的状态*/
      updateStatus(row){
        this.$ajax.put('/permission/update',row).then((res)=>{
          this.$message.success("状态更新成功！")
        })
      }
    }
};
</script>

<style scoped>

</style>